﻿Imports System.Security.Principal

Public Class Security

#Region "Properties"

    Private Shared _huidigeWinkelierNaam As String
    Public Shared Property HuidigeWinkelierNaam() As String
        Get
            Return _huidigeWinkelierNaam
        End Get
        Set(ByVal value As String)
            _huidigeWinkelierNaam = value
            Dim winkelierRij As ArtikelsDataSet.WinkeliersRow = (From w In Utility.Data.Winkeliers _
                                                                 Select w Where w.Naam.ToLower() = value.ToLower()).SingleOrDefault
            If (winkelierRij IsNot Nothing) Then
                _idHuidigeWinkelier = winkelierRij.Id
                log.WriteInfo("Winkelier {0} is aangelogd.", value)
            Else
                _idHuidigeWinkelier = 0 ' naam niet gevonden, zet ID op 0
            End If
        End Set
    End Property

    Private Shared _idHuidigeWinkelier As Integer = 0
    Public Shared ReadOnly Property HuidigeWinkelierId() As Integer
        Get
            Return _idHuidigeWinkelier
        End Get
    End Property

    Public Shared ReadOnly Property GeldigeWinkelier() As Boolean
        Get
            Return _idHuidigeWinkelier <> 0
        End Get
    End Property

#End Region

    Private Sub New() ' zorg dat er geen publieke constructor is
    End Sub

    Public Shared Function IsAdmin() As Boolean
        If (Environment.GetCommandLineArgs.Contains("/geenadmin")) Then Return False
        If (Environment.GetCommandLineArgs.Contains("/weladmin")) Then Return True
        Return (New WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole(WindowsBuiltInRole.Administrator))
    End Function

    Public Shared Function IsWinkelwerking() As Boolean
        If (Environment.GetCommandLineArgs.Contains("/winkelwerking")) Then Return True
        Return (New WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole("Winkelwerkinggroep"))
    End Function

    Public Shared Function IsBoekhouding() As Boolean
        Return (New WindowsPrincipal(WindowsIdentity.GetCurrent()).IsInRole("Boekhoudinggroep"))
    End Function

    ''' <summary>
    ''' Is de gebruiker een gewone winkelier?
    ''' </summary>
    ''' <returns>True indien de gebruiker geen speciale rechten heeft, False in het andere geval.</returns>
    Public Shared Function IsWinkelierZonderMeerRechten() As Boolean
        Return Not IsAdmin() AndAlso Not IsWinkelwerking() AndAlso Not IsBoekhouding()
        'Return Not IsWinkelwerking() AndAlso Not IsBoekhouding()
    End Function

End Class
